iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0

Day9 Leetcode Array系列---- Contains Duplicate

本次題目 Contains Duplicate by JS

判斷陣列中是否有重複元素

input1 = [1,2,3,1]
output1 = true

input2 = [1,2,3,4]
output2 = false

input3 = [1,1,1,3,3,4,3,2,4,2]
output3 = true

思考路線

  1. 我可以用 filter 去除重複元素
  2. 能利用索引與值去判斷是否重複,在有重複元素,ex[1,2,3,1,1]的狀況下,用陣列方法的 indexOf( ) 去查元素索引只會顯示第一個元素(第 1 個 1 的索引) ,利用這個特性去除重複元素
  3. 比較處理前後陣列長度是否不同,如果不同表示有重複元素

Coding Time

用 filter 傳入 元素本身與其索引給匿名函式做判斷,如果在這一次的判斷中,該元素的索引不等於傳入的 index 就去除它( indexOf 只會傳出第一個重複元素的索引) ,比較處理前後陣列長度,最後是我寫的簡單判斷

function anyDuplicate(ary){
    a = ary.filter( (x,index)=> { return ary.indexOf(x) == index})
    return !(ary.length == a.length)
}

function expect(a,b){
    console.log(a===b)
}

expect(anyDuplicate(input1),output1)
expect(anyDuplicate(input2),output2)
expect(anyDuplicate(input3),output3)

開始覺得有測試是件好事,執行之後可以看到 true or false ,不需要用肉眼一一判斷,只需要關注哪些成功哪些失敗,在調整程式,如果有足夠多的測試、案例、要求,程式就會越來越穩定

今天到此為止,有任何問題請在下方留言或透過email、GitHub聯絡我,感謝閱讀

Daily kitty


上一篇
Day 8 -- Merge Sorted Array
下一篇
Day 10 -- Contains Duplicate II
系列文
菜雞的30天工程師轉職日記--Leetcode30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言